
#ifndef SCENE_H
#define SCENE_H

// INCLUDES ********************************************************************

#include "DrawableContainer.h"

#include <stdint.h>

// FORWARD DECLARATIONS ********************************************************

// *****************************************************************************

//! Scene
//! 
//! An object of class 'Scene' represents a scenery. This could be a 
//! stand-alone menu being displayed ( for example the main menu) or a level of  
//! the game. The scene contains objects such as sprites, text, buttons.
//! 
//! Scenes are controlled by the GameController instance, it can load 
//! and change scenes. Users will inherit from this class to create their
//! own scenery which can then be set through the GameController

// *****************************************************************************

namespace Meteor 
{
    class Scene : public DrawableContainer
    {
         public:
            Scene();
        
            Scene( Tween transitionTween);
            
            virtual ~Scene();

            ///! to be implemented in a subclass for custom transitions
            virtual Tween* TransitionTween( const float startValue,
                                            const float targetValue,
                                            const float duration) const;

        private:
        
    }; // end of class Scene
    
} // end of namespce Meteor

#endif // SCENE_H
